package com.jt.demo3;

public class NewDog {

    /**
     *  1.该方法是通过反射的机制实例化对象 !!!框架中的重点!!!
     *  2.反射机制:
     *      java中创建对象的常用的一种方式,指定类型的路径,
     *      之后通过关键方法.newInstance()实例化对象
     *      类比:  xxx.newInstance() ~~ new Dog();
     *  3.精髓: 为什么用反射/而不是new?
     *      3.1 因为第三方通过反射实例化对象 可以实现松耦合!!
     *      3.2 一般多用于框架,因为框架不清楚用户到底需要啥,只有运行期
     *          才清楚用户到底需要什么对象. 扩展性更好!!!
     *  4.异常说明:
     *      1.运行时异常   运行期间出错了
     *      2.编译异常/检查异常  编译时提示报错
     *  5.反射时,必须调用对象的无参构造方法!!!
     *    如果没有无参,调用有参可以实例化对象!!!但在框架中,参数谁给???
     */

    public static void main(String[] args) throws ClassNotFoundException, InstantiationException, IllegalAccessException {
        Dog dog = (Dog) Class.forName("com.jt.demo3.Dog").newInstance();
        dog.hello();
    }
}
